殘差分析 Residual Analysis
基礎殘差分析 (Residual Analysis)
這是評估模型好壞的核心步驟。
import numpy as np
def calculate_residuals(y_true, y_pred):
# 直接計算兩者之差
# y_true 與 y_pred 通常為長度為 m 的 NumPy 陣列
res = y_true - y_pred
return res
詳細解析:
- 元素級運算 (Element-wise):
- 在術科環境中,
y_true和y_pred會是 NumPy 陣列。 - 使用
y_true - y_pred時,NumPy 會自動對應每個位置進行相減,這稱為「向量化運算」,比迴圈快且簡潔。
- 在術科環境中,
- 殘差的物理意義:
- 正值:代表真實值大於預測值(模型低估了)。
- 負值:代表真實值小於預測值(模型高估了)。
- 評分關鍵:維度匹配:
- 考試時需確保
y_true與y_pred的形狀 (Shape) 一致。如果一個是向量而另一個是矩陣,減法會產生錯誤或非預期的結果。
- 考試時需確保
所謂的殘差(Residual),定義非常簡單:
如果模型是完美的,殘差應該看起來像「隨機雜訊」;如果殘差中隱藏了某種模式(Pattern),就代表模型遺漏了重要的資訊。
平均絕對誤差 (MAE)
計算預測值與真實值之間差距的絕對值總和,取其平均。
import numpy as np
def calculate_mae(y_true, y_pred):
# np.abs() 取絕對值,np.mean() 計算平均
return np.mean(np.abs(y_true - y_pred))
均方誤差 (MSE)
將差距先平方再平均。這會讓較大的誤差對結果產生更大的影響。
def calculate_mse(y_true, y_pred):
# **2 代表平方運算
return np.mean((y_true - y_pred)**2)
學習重點
- 向量化運算:在術科上機考時,直接使用 NumPy 陣列相減(
y_true - y_pred)即可,不需要寫for迴圈。 - 維度一致:確保
y_true與y_pred的樣本數相同,否則計算平均時會報錯。